Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-PJL-009 |
| Deskripsi | Mengelola alur pengiriman barang penjualan lewat papan kanban: dari belum diproses, picking, packing, siap kirim (wajib pemeriksa), terkirim, hingga selesai diterima |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar invoice pengiriman dalam papan kanban berstatus To-Do / Belum diproses, On Picking, On Packing, Ready to Send, dan Terkirim.
- User memproses picking dan packing barang per kelompok petugas.
- User memindahkan pengiriman ke Ready to Send hanya setelah memilih pemeriksa (
checked_by). - User memilih kurir saat memindahkan ke Terkirim.
- User mengisi penerima saat menandai pengiriman Selesai.
- User melihat detail invoice pengiriman dan mencetak surat jalan.
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan invoice pengiriman dalam kolom kanban sesuai status |
| FR-02 | User dapat memfilter daftar berdasarkan nomor invoice, nomor bukti, dan rentang tanggal |
| FR-03 | User dapat memproses picking barang menuju status On Picking / On Packing |
| FR-04 | User dapat memproses packing barang menuju status On Packing / Ready to Send |
| FR-05 | Pemindahan ke Ready to Send wajib memilih pemeriksa (checked_by) |
| FR-06 | Pemindahan ke Terkirim wajib memilih kurir / pengirim |
| FR-07 | Penandaan Selesai wajib mengisi nama penerima |
| FR-08 | User dapat melihat detail invoice pengiriman |
| FR-09 | User dapat mencetak surat jalan setelah siap kirim |
| FR-10 | Hak akses memakai permission #pengiriman pada kanban (view, basic, reprint, all); dropdown kartu memakai #pengiriman-barang |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat kanban pengiriman barang |
| UC-02 | Memproses picking barang |
| UC-03 | Memproses packing barang |
| UC-04 | Memindahkan ke Ready to Send dengan pemeriksa |
| UC-05 | Mengirim barang dengan kurir |
| UC-06 | Menandai pengiriman selesai |
| UC-07 | Melihat detail invoice pengiriman |
4. Use Case Scenario
UC-01 : Melihat kanban pengiriman barang
| Aktor | User gudang / pengiriman dengan hak lihat |
| Deskripsi | User membuka papan kanban dan melihat invoice pengiriman per status |
| Prekondisi | User sudah login Brand aktif terpilih Halaman pengiriman barang dapat diakses |
| Alur utama | 1. User membuka halaman Pengiriman Barang (route ada; entri menu default dikomentari). 2. Sistem memuat invoice dengan status selain Selesai. 3. Sistem menampilkan kolom To-Do, On Picking, On Packing, Ready to Send, dan Terkirim. 4. User dapat mencari nomor invoice atau filter nomor bukti / tanggal. |
| Alur negatif | - Jika gagal memuat, daftar tampil kosong. - Jika user tanpa permission all, daftar dibatasi ke invoice milik user tersebut. |
| Bisnis rule | - Kolom pertama di FE berlabel To-Do (setara Belum diproses di demo). - Kartu berstatus Selesai tidak ditampilkan di kanban (bukan kolom ke-6). - On Picking dikelompokkan per picked_by; On Packing per packed_by.- Perpindahan mundur antar kolom ditolak. - Pick/pack baris memakai PUT /pengiriman-barang/bulk; transisi status invoice memakai PUT /invoice-pengiriman-barang/bulk. |
| Postkondisi | Kanban pengiriman tampil |
| Trigger | User membuka /brand/:id/pengiriman-barang |
| Kode FR | FR-01 FR-02 FR-10 |
UC-02 : Memproses picking barang
| Aktor | User gudang dengan hak dasar |
| Deskripsi | User memindahkan invoice dari To-Do ke On Picking dan mencatat barang yang dipick |
| Prekondisi | Ada kartu di kolom To-Do |
| Alur utama | 1. User menyeret kartu ke On Picking atau menekan aksi pindah / Lakukan Picking. 2. Sistem membuka modal picking bila qty belum penuh, atau langsung memproses jika sudah pick penuh. 3. Sistem menyimpan status On Picking lewat update bulk ( pick). |
| Alur negatif | - Jika urutan status mundur, muncul "Tidak dapat melakukan perpindahan karena urutan status". - Jika modal picking dibatalkan setelah drag, kartu dikembalikan dan muncul peringatan gagal pindah. |
| Bisnis rule | - Progress pick dibanding history.total_all_status vs total_picked.- Tombol Packing Sekarang hanya muncul jika seluruh qty sudah dipick. |
| Postkondisi | Invoice berstatus On Picking |
| Trigger | User drag atau tekan Lakukan Picking / Packing Sekarang |
| Kode FR | FR-03 |
UC-03 : Memproses packing barang
| Aktor | User gudang dengan hak dasar |
| Deskripsi | User memindahkan invoice dari On Picking ke On Packing dan mencatat barang yang dipack |
| Prekondisi | Ada kartu di On Picking dengan pick lengkap (untuk lanjut penuh) |
| Alur utama | 1. User menyeret ke On Packing atau menekan Lakukan Packing / Packing Sekarang. 2. Sistem membuka modal packing bila qty belum penuh. 3. Sistem menyimpan status On Packing lewat update bulk ( pack). |
| Alur negatif | - Jika barang belum dipick penuh, pemindahan ditahan / dikembalikan dengan peringatan. - Jika server menolak, muncul pesan error. |
| Bisnis rule | - Progress pack dibanding history.total_all_status vs total_packed.- Tombol Ready To Send hanya muncul jika seluruh qty sudah dipack. |
| Postkondisi | Invoice berstatus On Packing |
| Trigger | User drag atau tekan Lakukan Packing |
| Kode FR | FR-04 |
UC-04 : Memindahkan ke Ready to Send dengan pemeriksa
| Aktor | User gudang dengan hak dasar |
| Deskripsi | User memindahkan invoice yang sudah dipack ke Ready to Send setelah check ulang |
| Prekondisi | Qty packing sudah lengkap (total_all_status === total_packed) |
| Alur utama | 1. User menekan Ready To Send atau menyeret ke kolom Ready to Send setelah packing selesai. 2. Sistem membuka modal Check Ulang Barang. 3. User memilih user pemeriksa aktif brand. 4. User konfirmasi. 5. Sistem mengirim update bulk to_send beserta daftar check (invoice_pengiriman_id, checked_by).6. Opsional: sistem menanya apakah ingin cetak surat jalan. |
| Alur negatif | - Jika pemeriksa belum dipilih, muncul "Barang yg akan dikirim belum di check!" atau "Form Belum Dipilih". - Jika masih ada barang belum packing, muncul "Barang masih ada yg belum di Packing". - Jika modal check ditutup tanpa proses setelah drag, kartu dikembalikan dengan peringatan belum check ulang. |
| Bisnis rule | - Tanpa checked_by, pemindahan ke Ready to Send ditolak.- Hanya invoice dengan packing lengkap yang diproses. |
| Postkondisi | Invoice berstatus Ready to Send dan punya pemeriksa |
| Trigger | User menekan Ready To Send atau menyelesaikan packing menuju Ready to Send |
| Kode FR | FR-05 FR-09 |
UC-05 : Mengirim barang dengan kurir
| Aktor | User gudang dengan hak dasar |
| Deskripsi | User memindahkan invoice dari Ready to Send ke Terkirim dengan memilih kurir |
| Prekondisi | Ada kartu di Ready to Send |
| Alur utama | 1. User menyeret ke Terkirim atau menekan aksi kirim pada kartu. 2. Sistem membuka modal pilih kurir (karyawan). 3. User memilih kurir lalu konfirmasi. 4. Sistem mengirim update bulk sent berisi invoice_pengiriman_id dan pengirim. |
| Alur negatif | - Jika kurir belum dipilih, muncul "Kurir belum dipilih!". - Jika modal kurir dibatalkan setelah drag, kartu dikembalikan dengan peringatan kurir belum dipilih. |
| Bisnis rule | - Nama pengirim diambil dari nama karyawan terpilih. |
| Postkondisi | Invoice berstatus Terkirim |
| Trigger | User drag ke Terkirim atau aksi kirim pada kartu |
| Kode FR | FR-06 |
UC-06 : Menandai pengiriman selesai
| Aktor | User gudang dengan hak dasar |
| Deskripsi | User menandai invoice terkirim sebagai Selesai dengan mengisi penerima |
| Prekondisi | Ada kartu di kolom Terkirim |
| Alur utama | 1. User menekan aksi selesai pada kartu atau Tandai Sebagai Selesai (jika lebih dari satu). 2. Sistem membuka modal penerima. 3. User mengisi penerima lalu konfirmasi. 4. Sistem mengirim update bulk selesai berisi invoice_pengiriman_id dan penerima.5. Kartu hilang dari kanban. |
| Alur negatif | - Jika penerima kosong, muncul "Penerima belum diisi!". - Jika server menolak, muncul pesan error. |
| Bisnis rule | - Status Selesai tidak punya kolom kanban; kartu difilter keluar dari daftar. |
| Postkondisi | Invoice berstatus Selesai |
| Trigger | User menandai selesai pada kartu Terkirim |
| Kode FR | FR-07 |
UC-07 : Melihat detail invoice pengiriman
| Aktor | User gudang dengan hak lihat |
| Deskripsi | User membuka halaman detail satu invoice pengiriman |
| Prekondisi | Invoice pengiriman ada |
| Alur utama | 1. User membuka /brand/:id/pengiriman-barang/lihat/:idx.2. Sistem memuat detail invoice beserta baris barang, gudang, dan pengirim. 3. Sistem menampilkan informasi dan rincian. |
| Alur negatif | - Jika gagal memuat, detail tidak lengkap / kosong. |
| Bisnis rule | - |
| Postkondisi | Detail invoice tampil |
| Trigger | User membuka halaman lihat |
| Kode FR | FR-08 |
5. Data Flow Diagram
DFD-01 — Alur status pengiriman barang
6. Sequence Diagram
SD-01 — UC-01 : Melihat kanban pengiriman barang
SD-02 — UC-02 : Memproses picking barang
SD-03 — UC-03 : Memproses packing barang
SD-04 — UC-04 : Memindahkan ke Ready to Send dengan pemeriksa
SD-05 — UC-05 : Mengirim barang dengan kurir
SD-06 — UC-06 : Menandai pengiriman selesai
SD-07 — UC-07 : Melihat detail invoice pengiriman
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-pengiriman-barang | existing | - |
GET /invoice-pengiriman-barang/:id | existing | - |
POST /invoice-pengiriman-barang | existing | - |
PUT /invoice-pengiriman-barang/:id | existing | - |
PUT /invoice-pengiriman-barang/invoice-only/:id | existing | - |
PUT /invoice-pengiriman-barang/bulk | existing | - |
DELETE /invoice-pengiriman-barang/by-modul/:id | existing | - |
GET /pengiriman-barang | existing | - |
PUT /pengiriman-barang/bulk | existing | - |